summaryrefslogtreecommitdiff
path: root/src/pages/blogs/[...slug].astro
diff options
context:
space:
mode:
authorKyren223 <contact@kyren.codes>2026-10-06 20:46:31 +0300
committerKyren223 <contact@kyren.codes>2026-10-06 20:46:31 +0300
commitba1be9573ef20d6424ae987257a1c727c47d4b53 (patch)
treee59ef56f19142215070d0516a9b3a110d15557b6 /src/pages/blogs/[...slug].astro
parentea056b6e080669ba4b6f16c2757b4e2e88ea0553 (diff)
Initial setup for website rewrite
Diffstat (limited to 'src/pages/blogs/[...slug].astro')
-rw-r--r--src/pages/blogs/[...slug].astro132
1 files changed, 0 insertions, 132 deletions
diff --git a/src/pages/blogs/[...slug].astro b/src/pages/blogs/[...slug].astro
deleted file mode 100644
index a7394ca..0000000
--- a/src/pages/blogs/[...slug].astro
+++ /dev/null
@@ -1,132 +0,0 @@
----
-import { getCollection } from "astro:content";
-import Terminal from "@layouts/Terminal.astro";
-import BlogItem from "@components/BlogItem.astro";
-import Link from "@components/Link.astro";
-import TerminalBorder from "@components/TerminalBorder.astro";
-
-export async function getStaticPaths() {
- const blogEntries = await getCollection("blogs");
- return blogEntries.map((blog) => ({
- params: { slug: blog.slug },
- props: { entry: blog },
- }));
-}
-
-const { entry } = Astro.props;
-const { Content } = await entry.render();
-
-const blogs = await getCollection("blogs");
-const sortedBlogs = blogs.sort((a, b) => +b.data.date - +a.data.date);
-const currentIndex = sortedBlogs.findIndex((blog) => blog.slug === entry.slug);
-const previousBlog = sortedBlogs[currentIndex + 1] || undefined;
-const nextBlog = sortedBlogs[currentIndex - 1] || undefined;
----
-
-<Terminal path="/home/kyren/blogs/">
- <div class="blog-scroll w-full h-[85svh] sm:h-[30vw] overflow-y-auto pr-[1.25vw] border-box">
- <div class="text-[130%] h-full">
- <div class="text-[110%]">
- <BlogItem
- title={entry.data.title}
- description={entry.data.description ?? ""}
- date={entry.data.date}
- />
- </div>
- <div class="markdown">
- <Content components={{ a: Link }} />
- </div>
- <div class="mt-[1vw] px-[0.1vw] py-[0.625vw] grid grid-cols-2 gap-[1.25vw]">
- {
- previousBlog ? (
- <TerminalBorder header="Previous Blog">
- <span class="text-[var(--secondary)] truncate flex-1">
- <Link href=`/blogs/${previousBlog.slug}` newTab={false}>
- vim ~/blogs/{previousBlog.slug}.md
- </Link>
- </span>
- </TerminalBorder>
- ) : (
- <div class="min-w-0 invisible" />
- )
- }
- {
- nextBlog ? (
- <TerminalBorder header="Next Blog">
- <div class="w-full flex items-center">
- <span class="text-[var(--secondary)] truncate flex-1">
- <Link href=`/blogs/${nextBlog.slug}` newTab={false}>
- vim ~/blogs/{nextBlog.slug}.md
- </Link>
- </span>
- </div>
- </TerminalBorder>
- ) : (
- <div class="min-w-0 invisible" />
- )
- }
- </div>
- </div>
- </div>
-</Terminal>
-
-<style is:global>
- .markdown {
- user-select: text;
- font-size: 1.1rem;
- }
- .markdown a {
- display: inline-block;
- font-weight: normal;
- }
- .markdown code {
- background: #333333;
- color: var(--accent);
- padding: 0 0.5em;
- }
- .markdown ul {
- list-style-type: square;
- margin-left: 1em;
- margin-bottom: 1em;
- font-size: 90%;
- }
- .markdown li {
- margin-bottom: 0.5em;
- }
- .markdown p {
- margin-bottom: 1em;
- user-select: text;
- }
- .markdown strong {
- font-weight: bold;
- }
- .markdown h2 {
- color: var(--secondary);
- font-size: 125%;
- margin-bottom: 0.5em;
- }
- .markdown h3 {
- color: var(--secondary);
- font-size: 110%;
- margin-bottom: 0.25em;
- }
- .expressive-code {
- margin-bottom: 1em;
- }
-</style>
-
-<script>
- document.addEventListener('wheel', (e) => {
- const box = document.querySelector('.blog-scroll');
- if (!box) return;
-
- // If scrolling the page itself, forward it to the box
- const atTop = box.scrollTop === 0 && e.deltaY < 0;
- const atBottom = box.scrollHeight - box.scrollTop === box.clientHeight && e.deltaY > 0;
-
- if (!atTop && !atBottom) {
- box.scrollTop += e.deltaY;
- e.preventDefault();
- }
- }, { passive: false });
-</script>